/**
 * Title: Hyperbolic engine
 * Description: jFamilyTree Engine
 * Version: provider
 * Copyright: (c) 2001-2008
 * Terms of use:see license agreement at http://treebolic.sourceforge.net/en/license.htm
 * Author: Bernard Bou
 * Company: bsys
 * Update: Mon Mar 10 00:00:00 CEST 2008
 */
package jFamilyTree.model;

/**
 * Provider interface
 * 
 * @author Bernard Bou
 */
public interface IProvider
{
	/**
	 * Called by framework to pass context reference (may default to void action if provider does not need it)
	 * 
	 * @param thisContext
	 *        context
	 */
	public void connect(IProviderContext thisContext);

	/**
	 * Make model
	 * 
	 * @param thisSource
	 *        source (a string that refers to the data in a was that the provider implementation will understand)
	 * @return model
	 */
	public Model makeModel(String thisSource);

	/**
	 * Make tree. Settings are not parsed. This is used in mounting.
	 * 
	 * @param thisSource
	 *        source (a string that refers to the data in a was that the provider implementation will understand)
	 * @param checkRecursion
	 *        whether immediate recursion is checked (avoid mount-now infinite recursion)
	 * @return tree
	 */
	public Tree makeTree(String thisSource, boolean checkRecursion);
}
